A user having one or more client devices, each generating one or more user data sets, may wish to store data from the client devices on a remote data storage service, such as a cloud storage service. The user would also like to synchronize the user data sets stored on each client device with the remote data storage server, thereby generating a single state of the user's data sets across the multiple client devices at the remote storage service. A cloud storage service may not provide a synchronization system that synchronizes user data sets between the user's multiple client devices. Thus, such as user needs a synchronization service, in addition to a cloud storage service.
A synchronization service must be able to resolve conflicts between different versions of a user data set, such as a contacts user data set, that are generated by different client devices. In addition, the user's client devices may not all be running the same version of a software application that generated the user data set, e.g. a contacts management software. If there are one or more incompatibilities, or bugs, between the user data generated by the different versions of the software, then a synchronization system of the prior art would store multiple different versions of the user data set: one version of the user data set for each version of the software that generated the data set. The synchronization system would then need to continue maintain each of the multiple versions of the user data set, for the same user data for each of the different software versions.
In addition, synchronization systems of the prior art often use a single synchronization database and a single synchronization engine on a client device. If the synchronization database on the client device is lost, corrupted, or reset, the client device may not be able to reliably synchronize to the last state of the user data as known to the synchronization system and the client device. The single synchronization engine can also constitute a performance choke point, making synchronization of a client device with a synchronization system less reliable and of lower performance. Further, tunable parameters of the client device synchronization engine of the prior art, such as the frequency with which synchronization occurs, are controlled by the synchronization system, not by the client device synchronization engine. Tunable synchronization parameters are adjusted by the synchronization system for the optimization of the synchronization system, not the client device.